"""
数据处理层
"""
import json
import logging
import os.path

from conf.settings import USER_DIR, GOODS_DB_FILE

logger = logging.getLogger(__name__)


def read(username: str):
    """
    根据用户名返回用户字典，用户不存在或异常就返回None
    :param username: 用户名
    :return: 用户字典 或 None
    """
    # 文件不存在
    if not is_user_exist(username):
        return None
    # 拼接用户文件路径
    user_file = os.path.join(USER_DIR, f"{username}.json")
    with open(user_file, 'r', encoding='utf8') as f:
        try:
            user_dict = json.load(f)
        except Exception as e:  # 捕获文件为空的异常
            pass
    # 文件为空
    if not user_dict:
        print('用户文件异常，请联系管理员！！！')
        return None
    # 返回字典
    return user_dict


def save(user_dict: dict):
    """
    保存用户数据
    :param user_dict: 用户字典
    :return: None
    """
    user_file = os.path.join(USER_DIR, f"{user_dict['username']}.json")
    with open(user_file, 'w', encoding='utf8') as f:
        json.dump(user_dict, f, indent=1, ensure_ascii=False)


def is_user_exist(username: str):
    """判断用户是否存在"""
    return os.path.exists(os.path.join(USER_DIR, f"{username}.json"))


def set_goods_info(goods_info: dict):
    """保存商品数据"""
    with open(GOODS_DB_FILE, 'w', encoding='utf8') as f:
        json.dump(goods_info, f, indent=1, ensure_ascii=False)


def get_goods_info():
    """读取商品信息"""
    # 文件不存在
    if not os.path.exists(GOODS_DB_FILE):
        print('商品数据文件未找到，请联系管理员！！！')
        logger.warning('商品数据文件未找到，请联系管理员！！！')
        return None
    # 读取商品信息
    with open(GOODS_DB_FILE, 'r', encoding='utf8') as f:
        try:
            goods_info = json.load(f)
        except Exception as e:
            pass
    # 文件为空
    if not goods_info:
        print('商品数据文件为空，购物操作无法使用，请联系管理员！！！')
        logger.warning('商品数据文件为空，购物操作无法使用，请联系管理员！！！')
        return None
    # 返回商品字典
    return goods_info
